package com.jse.io.nio.network.old;

import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;

import org.apache.log4j.Logger;

/**
 * @author zenghua233@gmail.com
 *
 * @createtime 2014年9月4日 下午3:06:40
 *
 * 参考：http://cuisuqiang.iteye.com/blog/1434416（java InputStream读取数据问题）
 * @version 1.0
 */

public class NormalServerSocket
{
	public static final Logger mylog = Logger.getLogger(NormalServerSocket.class);
	public static void main(String[] args)
	{
		
		try {
			/**
			 * 默认ip为本机ip（0.0.0.0（可以是本机的具体ip（10.2.28.128）也可以是127.0.0.1，
			 * 如果指定了本机ip就只能连接对应的ip，真正开发要执行具体ip，服务器有可能有多个网卡）
			 * ，anyLocalAddress，参考构造函数）
			 */
			ServerSocket server = new ServerSocket(99);
			Socket socket;
			
			while (true) {
				//获取新的socket，监听原始客户端信息，socket可以看做是一个有描述的文件（参考11.4.1）
				socket = server.accept();
				InputStream input = socket.getInputStream();
				OutputStream output = socket.getOutputStream();
				
				
				String clientMessage = StreamUtil.getInput(input);
				System.out.println("clientMessage is : " + clientMessage);
				System.out.println(output);
				output.write(("server has received message!" + new Date().toString()).getBytes());
//				output.close();
				
//				PrintWriter pw = new PrintWriter(output);
//				pw.print("server");
//				Thread.sleep(3000);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	
	
	
	/**
	 * 读取流
	 * @param input
	 * @return
	 */
	public static String getInput(InputStream input) {
		int count = 0;
		
		if (input != null) {
			try {
				while (count == 0) {
					count = input.available();
				}
				byte[] buffer = new byte[count];
				input.read(buffer);
//				input.close();
				return new String(buffer).toString();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		
		return null;
	}
}
